<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <!-- 1、引入依赖 -->
  <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
  <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
  <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

  <div id="app"></div>

  <!-- 2、编写react代码 -->
  <script type="text/babel">

    class App extends React.Component {
      constructor(){
        super()
        this.state = {
          // 1、在jxs{}中可以正常显示的内容
          message: 'hello world', //String
          age: 16, //Number
          names: ['1', '2', '3'], //Array
          // 2、在jxs{}中不能显示的内容（react会忽略，最终界面上什么也不显示）
          test1: null,//不可以使用toString转为字符串，可以使用String(null)转为字符串
          test2: undefined,//不可以使用toString转为字符串，可以使用String(undefined)转为字符串
          test3: true, //可以使用toString转为字符串
          test4: false,
          // 3、对象不能作为jsx的字类 Objects are not valid as a React child
          info: {
            name: 'plum',
            sno: '317040300133'
          }
        }
      }


      // 所有组件必须实现render方法
      render() {
        const { message, age, names, test1, test2, test3, test4, info } = this.state
        /**
         * 1、当变量是Number、String、Array类型时，可以直接显示
         * 2、当变量是null、undefined、Boolean类型时，内容为空
         *  2.1、如果希望可以显示null、undefined、Boolean，需要转成字符串
         *  2.2、转换的方式：toString()、和空字符串拼接、String(变量)等
         * 3、对象类型不能作为子元素 Objects are not valid as a React child
        */
        // 必须用return返回
        return (
          // {}语法  里面可以是表达式
          <div>
           <h2>{message}</h2>
           <h2>{age}</h2>
           <h2>{names}</h2>
           <h2>{test1}</h2>
           <h2>{String(test1)}</h2>
           <h2>{test2}</h2>
           <h2>{test2 + ''}</h2>
           <h2>{test3}</h2>
           <h2>{test3.toString()}</h2>
           <h2>{test4}</h2>
           <h2>{info.name}</h2>
          </div>
        )
      }
    }


    ReactDOM.render(<App/>, document.getElementById('app')) 
  </script>
</body>
</html>